home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 142 / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin / tools / s_tool / scsic.s < prev    next >
Text File  |  1996-05-16  |  2KB  |  132 lines

  1.     .include    TNB.MAC
  2.     .include    IOCSCALL.MAC
  3.  
  4. *
  5. *_S_COMMAND( ID , COMLONG , COM , OUTDATALONG , OUTDATA , INDATALONG , INDATA );
  6. *            int    ID;
  7. *            int    COMLONG;
  8. *            char*    COM;
  9. *            int    OUTDATALONG;
  10. *            char*    OUTDATA;
  11. *            int    INDATALONG;
  12. *            char*    INDATA;
  13. *
  14. *        msgin error    = -1
  15. *        stsin error    = -2
  16. *        cmdout error    = -3  (datain/out 含む)
  17. *        select error    = -4
  18. *
  19. *            LUN 対策してません!
  20. *
  21.     .offset    8
  22. ID:        .ds.l    1
  23. ComLong:    .ds.l    1
  24. ComAdd:        .ds.l    1
  25. OutDataLong:    .ds.l    1
  26. OutDataAdd:    .ds.l    1
  27. InDataLong:    .ds.l    1
  28. InDataAdd:    .ds.l    1
  29.     .text
  30.  
  31.     .globl    _S_COMMAND
  32. _S_COMMAND:
  33.     link a6,#-4
  34.     movem.l    d3-d6/a1,-(sp)
  35.     move.l    ID(a6),d4        * d4 = ID
  36.     SCSI    _S_SELECT        * Selection
  37.     tst.l    d0
  38.     bne    _scme4            * select error
  39.  
  40.     move.l    ComLong(a6),d3        * Command Long
  41.     movea.l    ComAdd(a6),a1        * Command Adds
  42.     SCSI    _S_CMDOUT        * Command Out
  43.     tst.l    d0
  44.     bne    _scme3            * cmdout error
  45.  
  46.     move.l    OutDataLong(a6),d3    * OutDataあり?
  47.     tst.l    d3
  48.     beq    1f
  49.     *======DataOut
  50.     *move.l    OutDataLong(a6),d3    * OutData Long
  51.     movea.l    OutDataAdd(a6),a1    * OutData Adds
  52.     SCSI    _S_DATAOUT_P        * OutData OUT
  53.     tst.l    d0
  54.     bne    _scm4
  55. 1:
  56.     move.l    InDataLong(a6),d3    * InDataあり?
  57.     tst.l    d3
  58.     beq    1f
  59.     *======DataOut
  60.     *move.l    InDataLong(a6),d3    * InData Long
  61.     movea.l    InDataAdd(a6),a1    * InData Adds
  62.     SCSI    _S_DATAIN_P        * InData OUT
  63.     tst.l    d0
  64.     *bne    _scm4
  65. 1:
  66. _scm4:    *======ステイタス&メッセージチェック
  67.     lea    -1(a6),a1
  68.     SCSI    _S_STSIN
  69.     tst.l    d0
  70.     bne    _scme2
  71.     lea    -3(a6),a1
  72.     SCSI    _S_MSGIN
  73.     tst.l    d0
  74.     bne    _scme1
  75.  
  76.     *======STS,MSG の整理 (戻り値)
  77.     moveq    #0,d0
  78.     move.b    -3(a6),d0
  79.     asl.l    #8,d0
  80.     moveq    #0,d1
  81.     move.b    -1(a6),d1
  82.     add.l    d1,d0
  83.     bra    _scm1
  84.  
  85. _scme1:    *======エラー値 (戻り値)
  86.     moveq    #-1,d0
  87.     bra    _scm1
  88. _scme2:    *======エラー値 (戻り値)
  89.     moveq    #-2,d0
  90.     bra    _scm1
  91. _scme3:    *======エラー値 (戻り値)
  92.     moveq    #-3,d0
  93.     bra    _scm1
  94. _scme4:    *======エラー値 (戻り値)
  95.     moveq    #-4,d0
  96.  
  97. _scm1:
  98.     movem.l    (sp)+,d3-d6/a1
  99.     unlk a6
  100.     rts
  101.  
  102.  
  103.  
  104. *___S_MODESENSE    equ        $29    * undefined
  105. *___S_MODESELECT    equ        $2A    * undefined
  106.  
  107.  
  108.     .globl    _SCSI_MODESELECT
  109. _SCSI_MODESELECT:
  110.     movem.l    d3-d4,-(sp)
  111.     move.l    $000c(sp),d2
  112.     moveq    #$00,d3
  113.     move.w    $0012(sp),d3
  114.     move.l    $0014(sp),d4
  115.     movea.l    $0018(sp),a1
  116.     SCSI    _S_MODESELECT
  117.     movem.l    (sp)+,d3-d4
  118.     rts
  119.  
  120.     .globl    _SCSI_MODESENSE
  121. _SCSI_MODESENSE:
  122.     movem.l    d3-d4,-(sp)
  123.     move.l    $000c(sp),d2
  124.     moveq    #$00,d3
  125.     move.w    $0012(sp),d3
  126.     move.l    $0014(sp),d4
  127.     movea.l    $0018(sp),a1
  128.     SCSI    _S_MODESENSE
  129.     movem.l    (sp)+,d3-d4
  130.     rts
  131.  
  132.